package views;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import business.interfaces.ICalendarioReserva;
import data.entities.CalendarioReserva;
import data.entities.Cancha;

/**
 * Esta clase representa el modelo de la tabla que se utiliza para mostrar los
 * resultados de la busqueda de mejor ubicacion
 */
@SuppressWarnings("serial")
public class UbicacionesTableModel extends AbstractTableModel {

	private static final int NRO_CANCHA = 0;
	private static final int FECHA = 1;
	private static final int HORARIO = 2;

	/** lista que contiene las mejores ubicaciones encontradas */
	private List<ICalendarioReserva> ubicaciones;

	final static String[] columnNames = { "Nro Cancha", "Fecha", "Horario" };

	boolean isEditable = false;

	public UbicacionesTableModel(List<ICalendarioReserva> ubicaciones) {
		this.ubicaciones = ubicaciones;
	}

	public String getColumnName(int col) {
		return columnNames[col];
	}

	public int getRowCount() {
		return ubicaciones.size();
	}

	public int getColumnCount() {
		return columnNames.length;
	}

	public Object getValueAt(int row, int col) {
		Object result = null;
		CalendarioReserva calendarioReserva = (CalendarioReserva) (ubicaciones
				.get(row));
		switch (col) {
		case NRO_CANCHA:
			Cancha cancha = (Cancha) calendarioReserva.getCancha();
			result = cancha.getNumero();
			break;
		case FECHA:
			String[] splited = calendarioReserva.getFecha().toString().split("\\s+");
			result = splited[0];
			break;
		case HORARIO:
			result = calendarioReserva.getHora();
			break;
		}
		return result;

	}

	public ICalendarioReserva getUbicacionAtRow(int r) {
		ICalendarioReserva result = null;
		try {
			result = ubicaciones.get(r);
		} catch (IndexOutOfBoundsException e) {
			System.out.println("No has elegido ninguna ubicaci�n.");
		}
		
		return result;
	}

	public boolean isCellEditable(int row, int col) {
		return isEditable;
	}

	public void setEditable(boolean isEditable) {
		this.isEditable = isEditable;
	}

	public void setValueAt(Object value, int row, int col) {
	}
}
